MySQL SUM

您所在的位置:网站首页 sql sum两个字段的值 MySQL SUM

MySQL SUM

2024-07-17 08:35| 来源: 网络整理| 查看: 265

摘要:在本教程中,您将学习如何使用 MySQL SUM()函数来计算集合中值的总和。

MySQL SUM()函数简介

SUM()函数是一个聚合函数,可让您计算集合中值的总和。 SUM()函数的语法如下:

SUM(DISTINCT expression)Code language: SQL (Structured Query Language) (sql)

以下是SUM()函数的工作原理:

如果在不返回行的SELECT语句中使用SUM()函数, SUM()函数将返回NULL ,而不是零。 DISTINCT选项指示SUM()函数仅计算集合中不同值的总和。 SUM()函数忽略计算中的NULL值。MySQL SUM()函数图解

首先,创建一个名为sum_demo的新表:

CREATE TABLE sum_demo ( n INT );Code language: SQL (Structured Query Language) (sql)

然后,将一些行插入到sum_demo表中:

INSERT INTO sum_demo(n) VALUES(1),(1),(2),(NULL),(3); Code language: SQL (Structured Query Language) (sql)

第三,使用SUM()函数计算第n列中的总计值:

SELECT SUM(n) FROM sum_demo;Code language: SQL (Structured Query Language) (sql)

正如您所看到的, SUM()函数计算 1、1、2 和 3 的总和。并且它忽略 NULL。

最后,使用带有DISTINCT选项的SUM()来计算第n列中的总值:

SELECT SUM(DISTINCT n) FROM sum_demo;Code language: SQL (Structured Query Language) (sql)

在这种情况下,带有DISTINCT选项的SUM()仅计算不同值 1、2 和 3 的总和。

MySQL SUM()函数示例

我们来看看示例数据库中的orderdetails表。

1) 简单的MySQL SUM()函数示例

此示例使用SUM()函数获取订单详细信息的商品总数:

SELECT SUM(quantityOrdered) SalesQuantity FROM orderdetails;Code language: SQL (Structured Query Language) (sql)2) MySQL SUM()函数及表达式示例

以下显示订单号 10110 的订单行项目:

SELECT orderNumber, quantityOrdered, priceEach FROM orderdetails WHERE orderNumber = 10100;Code language: SQL (Structured Query Language) (sql)

要计算订单号 10110 的总计,请使用SUM()函数,如下所示:

SELECT SUM(quantityOrdered * priceEach) orderTotal FROM orderdetails WHERE orderNumber = 10100;Code language: SQL (Structured Query Language) (sql)

在本教程中, SUM()函数计算订单号 10110 的所有订单行项目的以下表达式的总和:

quantityOrdered * priceEachCode language: SQL (Structured Query Language) (sql)3) MySQL SUM()与GROUP BY子句示例

SUM()函数通常与GROUP BY子句一起使用来计算每个组的总和。

例如,您可以使用带有GROUP BY子句的SUM()函数来计算每个订单的总金额,如以下查询所示:

SELECT orderNumber, SUM(quantityOrdered * priceEach) orderTotal FROM orderdetails GROUP BY orderNumber ORDER BY orderTotal DESC;Code language: SQL (Structured Query Language) (sql)

在这个例子中:

GROUP BY子句将订单详细信息分为按订单号分组的组。 SUM()函数计算每个订单的每个金额的总和。4) MySQL SUM()与HAVING子句示例

您可以在HAVING子句中使用SUM()函数来过滤组。本例说明如何选择订单金额大于60,000的订单。

SELECT orderNumber, SUM(quantityOrdered * priceEach) orderTotal FROM orderdetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000 ORDER BY orderTotal;Code language: SQL (Structured Query Language) (sql)5) MySQL SUM()与NULL示例

如果结果集为空, SUM()函数将返回NULL 。有时,您可能希望SUM()函数返回零而不是NULL 。

在这种情况下,您可以使用COALESCE()函数。 COALESCE函数接受两个参数,如果第一个参数为NULL ,则返回第二个参数;否则,它返回第一个参数。

请参阅以下查询:

SELECT COALESCE(SUM(quantityOrdered * priceEach), 0) result FROM orderdetails WHERE productCode = 'S1_20';Code language: SQL (Structured Query Language) (sql)6) MySQL SUM()与连接示例

请参阅以下orders和orderdetails表:

您可以在带有JOIN子句的SELECT中使用SUM()函数,根据另一个表中的值指定的条件来计算一个表中的值的总和。

此语句使用SUM()函数计算已取消订单的总金额:

SELECT SUM(quantityOrdered * priceEach) cancelled_amount FROM orderdetails INNER JOIN orders USING (orderNumber) WHERE status = 'Cancelled';Code language: SQL (Structured Query Language) (sql)7) MySQL SUM IF 示例

以下语句使用SUM()函数计算每个订单状态的已售商品数量:

SELECT status, SUM(quantityOrdered) FROM orderdetails INNER JOIN orders USING (orderNumber) GROUP BY status; Code language: SQL (Structured Query Language) (sql)

如果要将行旋转为列,可以将SUM()函数与CASE表达式结合使用。这是一种SUMIF逻辑:

SELECT SUM(CASE WHEN status = 'Shipped' THEN quantityOrdered END) qty_shipped, SUM(CASE WHEN status = 'Resolved' THEN quantityOrdered END) qty_resolved, SUM(CASE WHEN status = 'Cancelled' THEN quantityOrdered END) qty_cancelled, SUM(CASE WHEN status = 'On Hold' THEN quantityOrdered END) qty_on_hold, SUM(CASE WHEN status = 'Disputed' THEN quantityOrdered END) qty_on_disputed, SUM(CASE WHEN status = 'In Process' THEN quantityOrdered END) qty_in_process FROM orderdetails INNER JOIN orders USING (orderNumber); Code language: SQL (Structured Query Language) (sql)

在本教程中,您学习了如何使用 MySQL SUM()函数来计算一组值的总和。

本教程有帮助吗?


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3